Tư tưởng thuật toán Thuật toán Bellman–Ford

[1]

  • Bước 1: Khởi tạo Π ( 0 , x ) = 0 ;   Π ( 0 , i ) = + ∞ , ∀ i ≠ x {\displaystyle \Pi (0,x)=0;\ \Pi (0,i)=+\infty ,\forall i\neq x} và k = 1 {\displaystyle k=1} .
  • Bước 2: Với mỗi i ∈ X {\displaystyle i\in X} ta đặt:

Π ( k , i ) = min ( { Π ( k − 1 , i ) } ∪ { Π ( k − 1 , j ) + L [ j ] [ i ] } ) {\displaystyle \Pi (k,i)=\min(\{\Pi (k-1,i)\}\cup \{\Pi (k-1,j)+L[j][i]\})}

  • Bước 3: Nếu Π ( k , i ) = Π ( k − 1 , i ) {\displaystyle \Pi (k,i)=\Pi (k-1,i)} với i ∈ X {\displaystyle i\in X} thì Π ( k , i ) {\displaystyle \Pi (k,i)} chính là độ dài đường đi ngắn nhất từ x đến i. Ngược lại nếu k < n thì tăng k = k+1 và trở lại bước 2; nếu k = n thì dừng vì từ x đi tới được 1 mạch âm.

Ưu điểm:[2]

Từ 1 đỉnh xuất phát nhìn hình ta có thế suy ra đường đi ngắn nhất từ đỉnh đó tới các đỉnh khác mà không cần làm lại từ đầu.

Ví dụ: Từ đỉnh 1 ta có thể tìm đường đi ngắn nhất từ 1->3 và 1->4 mà không cần làm lại.